System Monitors / Freezer
There are a lot of pure software freezers out there. The usage of such tools
may be of great help during the development and debugging of Slaves and the
installed program. WHDLoad directly supports HrtMon and ThrillKill. Other
kinds may be used via the option NoTrapHandler/S (this has some other
disadvantages of course). If you want direct support for an other one, you can
contact me and if it can be done, I will include support for it. On the
startup of WHDLoad it will check if one of the supported monitors are active.
If one is found WHDLoad will do some special stuff. If the MMU is used by
WHDLoad it will declare the memory used by the monitor as valid and
WriteTrough cacheable. During the game/demo runs it will forward all NMI
exceptions to the NMI vector saved from the monitors vector table. Additional,
if the VBR is moved by WHDLoad (NoVBRMove/S
is not set and the cpu is at least a 68010) it will compare the "FreezeKey" with the actual keyboard value at
each interrupt. If the values matchs WHDLoad will do the required keyboard
stuff, transform the stackframe to a NMI stackframe and enter the monitor via
his NMI handler.
HrtMon
The detection in memory should be relative safe. I think it will also work
with future versions. Be careful if the MMU is used by WHDLoad: don't access
area outside BaseMem from HrtMon. It will crash because HrtMon does not handle
the resulting Access Fault Exception.
ThrillKill
There is no useable signature in the freezer, so some code compares are used.
Therefore the detection will not work with other versions.